#! /usr/bin/env python
# -*- coding: UTF-8 -*-

# Importamos el módulo pygtk y le indicamos que use la versión 2
import pygtk
pygtk.require("2.0")

# Luego importamos el módulo de gtk y el gtk.glade, este ultimo que nos sirve
# para poder llamar/utilizar al archivo de glade
import gtk
import gtk.glade

# Creamos la clase de la ventana principal del programa
class MooControllerLogin ():
    def __init__(self, delegate, *args):

        self.delegate = delegate
        self.name = args[0]

        # Le decimos a nuestro programa que archivo de glade usar. 
        #Si no esta en el mismo directorio del
        # script habría que indicarle la ruta completa en donde se encuentra
        self.widgets = gtk.glade.XML("/home/ivan/workspace/moocrawler/src/MooView/login.glade")
        
        # Creamos un pequeño diccionario que contiene las señales definidas en
        # glade y su respectivo método (o llamada)
        signals = { "on_entUser_activate" : self.on_btnEnter_clicked,
                    "on_entPwd_activate" : self.on_btnEnter_clicked,
                    "on_btnEnter_clicked" : self.on_btnEnter_clicked,
                    "on_btnExit_clicked" : self.on_btnExit_clicked,
                    "gtk_main_quit" : gtk.main_quit }
        
        # Luego se auto-conectan las señales.
        self.widgets.signal_autoconnect(signals)
        
        # Ahora obtenemos del archivo glade los widgets que vamos a utilizar
        self.entUser = self.widgets.get_widget("entUser")
        self.entPwd = self.widgets.get_widget("entPwd")
        self.btnEnter = self.widgets.get_widget("btnEnter")
        self.wLogin = self.widgets.get_widget("wLogin")

        
    # Se definen los métodos de los eventos.
        
    def on_btnEnter_clicked(self, widget):
        self.btnEnter.set_sensitive(False)
        self.entPwd.set_sensitive(False)
        self.entUser.set_sensitive(False)
        
        connected = self.delegate.conn.login(self.entUser.get_text(), self.entPwd.get_text())
        
        self.btnEnter.set_sensitive(True)
        self.entPwd.set_sensitive(True)
        self.entUser.set_sensitive(True)
        
        if connected:
            self.delegate.conn.logout()
            self.wLogin.destroy()
            self.delegate.remove_view(self.name)
            self.delegate.signal(self.name, 'calendario')
            
    def on_btnExit_clicked(self, widget):
        gtk.main_quit()

    def start(self):
        gtk.main()

# Para terminar iniciamos el programa
if __name__ == "__main__":
    pass

